﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

// 单身狗2
void find_dog(int arr[], int sz, int* d1, int* d2)
{
	int z = 0;
	int popo = 0;
	for (int i = 0; i < sz; i++)
	{
		z ^= arr[i];
	}
	for (int i = 0; i < 32; i++)
	{
		if ((z >> i) & 1)
		{
			break;
		}
		popo++;
	}
	for (int i = 0; i < sz; i++)
	{
		if ((arr[i] >> popo) & 1)
		{
			(*d1) ^= arr[i];
		}
		else
		{
			(*d2) ^= arr[i];
		}
	}
}
int main()
{
	int arr[] = { 1,2,3,4,5,6,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int d1 = 0;
	int d2 = 0;
	find_dog(arr, sz, &d1, &d2);
	printf("%d %d\n", d1, d2);
	return 0;
}
















